# 设计模式   23
#       前辈们 从实践中 摸索出来的,对于某一类问题
#       提出的行之有效我的解决方案

#  单例模式
#  单个实例   通过类生成的对象是同一个

class Player():

    #  定义一个类属性
    __instance= None


    def __new__(cls, *args, **kwargs):# 创建对象
        print('__new__......')
        # 判断这个类属性是否为空
        # if 这个类属性为空 --> 第一次 -->创建对象 object.__new__(cls) 并返回类属性
        # if 这个类属性不为空 --> 说明创建过对象并返回
        if cls.__instance is not None:
            return cls.__instance
        else:
            cls.__instance = object.__new__(cls)
        return cls.__instance

    def returnbook(self):
        pass



    def __init__(self,name):      # 赋值,初识性参数
        print('__init__.....')
        self.name = name

p1 = Player('QQ')  #  实例化过程

p2 = Player('网易云')

print(p1.name)
print(p2.name)
print(p1 is p2)


